Completed
Push — master ( ee5e60...9ba384 )
by Kyungmi
34s
created

date-util.js ➔ ???   B

Complexity

Conditions 5
Paths 4

Size

Total Lines 12

Duplication

Lines 0
Ratio 0 %

Importance

Changes 4
Bugs 0 Features 0
Metric Value
cc 5
c 4
b 0
f 0
nc 4
dl 0
loc 12
rs 8.8571
nop 3

1 Function

Rating   Name   Duplication   Size   Complexity  
A date-util.js ➔ ... ➔ ??? 0 1 1
1
/**
2
 * Date Util functions
3
 *
4
 * @since 1.0.0
5
 */
6
7
const moment = require('moment');
8
9
/**
10
 * Format all dates in the received model
11
 * @param {Array|Date|Object} model
12
 * @param {string} [formatString]
13
 * @returns {*}
14
 */
15
exports.formatDates = (model, formatString, utcOffset) => {
16
  if (model instanceof Array) {
17
    return model.map(item => exports.formatDates(item, formatString, utcOffset));
18
  } else if (model instanceof Date || model instanceof moment) {
19
    return exports.formatDate(model, formatString, utcOffset);
20
  } else if (model instanceof Object) {
21
    const result = {};
22
    Object.keys(model).forEach((key) => { result[key] = exports.formatDates(model[key], formatString, utcOffset); });
23
    return result;
24
  }
25
  return model;
26
};
27
28
/**
29
 * Localize date
30
 * @param {Date} date
31
 * @param {number} [utcOffset]
32
 * @returns {moment}
33
 */
34
exports.toLocalDate = (date, utcOffset) => moment(date).utcOffset(typeof utcOffset === 'undefined' ? 9 : utcOffset);
35
36
/**
37
 * Format date to string
38
 * @param {Date} date
39
 * @param {string} [formatString]
40
 * @param {number} [utcOffset]
41
 * @returns {string}
42
 */
43
exports.formatDate = (date, formatString, utcOffset) => exports.toLocalDate(date, utcOffset).format(formatString);
44